home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / formats / iff / newiff.lzh / NewIFF / NewIFF.lzh / newiff / modules / iffpstrings.c < prev    next >
C/C++ Source or Header  |  1992-05-18  |  3KB  |  183 lines

  1. /* iffpstrings.c
  2.  *
  3.  *  centralized message routine for IFFP modules
  4.  *  If you plan to add international language support to
  5.  *  your iffparse application, all of the iffparse module
  6.  *  strings are here and are accessed via the SI() macro in
  7.  *  iffp/iff.h which calls GetString() 
  8.  *
  9.  *  There is some #ifdef'd out code here which will be useful if you
  10.  *  decide to localize your application when locale.library is released.
  11.  *
  12.  *  37.9 4/92 - fixed IFFerr() error equivalence tests and null string
  13.  */
  14.  
  15.  
  16. /*
  17. #define LOCALIZED
  18. */
  19.  
  20. #define INCLUDENAME    "iffp/iffpstrings.h"
  21.  
  22. #ifdef LOCALIZED
  23. #define CATALOGNAME    "yourapp.catalog"
  24. #include <clib/locale_protos.h>
  25. #ifndef NO_SAS_PRAGMAS
  26. #include <pragmas/locale_pragmas.h>
  27. #endif
  28. #endif
  29.  
  30. /* Locale stuff */
  31. #define  IFFP_MODULES
  32. #define  STRINGARRAY
  33. #include INCLUDENAME
  34.  
  35. #ifdef LOCALIZED
  36. extern struct Library *LocaleBase;
  37. #endif
  38.  
  39. extern struct AppString AppStrings[];
  40. static APTR   catalog = NULL;
  41.  
  42. /* For reference
  43. struct AppString
  44. {
  45.     LONG   as_ID;
  46.     STRPTR as_Str;
  47. };
  48. */
  49.  
  50. #include "iffp/iff.h"
  51. #include <intuition/screens.h>
  52.  
  53. static UBYTE nullstring[] = {""};
  54.  
  55. /* OpenStrings - localizes strings
  56.  * Requires open locale.library to work, but safe to call without
  57.  * You may pass nulls as args if you have no localized application strings
  58.  */
  59.  
  60. #ifdef LOCALIZED
  61. void OpenStrings()
  62.    {
  63.    if((LocaleBase)&&(!catalog))
  64.     {
  65.     catalog = OpenCatalogA(NULL,CATALOGNAME,NULL);
  66.     }
  67.     }
  68. #endif
  69.  
  70. /* CloseStrings - release the localized strings 
  71.  * Make sure all error messages are printed BEFORE calling this function
  72.  */
  73. #ifdef LOCALIZED
  74. void CloseStrings()
  75.     {
  76.     if((LocaleBase)&&(catalog))
  77.     {
  78.         CloseCatalog(catalog);
  79.     }
  80.     }
  81. #endif
  82.  
  83. /*
  84.  * IFFerr
  85.  *
  86.  * Returns pointer to IFF Error string or NULL string (no error)
  87.  */
  88. UBYTE *IFFerr(LONG error)
  89. {
  90.     /*
  91.      * English error messages for possible IFFERR_#? returns from various
  92.      * IFF routines.  To get the index into this array, take your IFFERR
  93.      * code, negate it, and subtract one.
  94.      *  idx = -error - 1;
  95.      *
  96.      * To index localized string, then add MSG_IFFP_STDFIRST
  97.      */
  98.  
  99.     static UBYTE unknown[48];
  100.     UBYTE  *s = nullstring;
  101.  
  102.     if((error < 0)&&(error >= -12))
  103.         {
  104.         s=SI(((-error) - 1) + MSG_IFFP_STDFIRST);
  105.         }
  106.     else if(error == CLIENT_ERROR)
  107.         {
  108.         s=SI(MSG_IFFP_CLIENTERR);
  109.         }
  110.     else if(error == NOFILE)
  111.         {
  112.         s=SI(MSG_IFFP_NOFILE);
  113.         }
  114.     else if(error)
  115.         {
  116.         sprintf(unknown,SI(MSG_IFFP_UNKNOWNERR_D),error);
  117.         s=unknown;
  118.         }
  119.     return(s);
  120. }
  121.  
  122.  
  123. /* OpenScreen error messages
  124.  */
  125. UBYTE *openScreenErr(ULONG errorcode)
  126.    {
  127.    static UBYTE unknown[48];
  128.    UBYTE *s=NULL;
  129.  
  130.         switch ( errorcode )
  131.     {
  132.     case OSERR_NOMEM:
  133.         s=SI(MSG_IFFP_OSNOMEM);
  134.         break;
  135.     case OSERR_NOCHIPMEM:
  136.         s=SI(MSG_IFFP_OSNOCHIPMEM);
  137.         break;
  138.     case OSERR_NOMONITOR:
  139.         s=SI(MSG_IFFP_OSNOMONITOR);
  140.         break;
  141.     case OSERR_NOCHIPS:
  142.         s=SI(MSG_IFFP_OSNOCHIPS);
  143.         break;
  144.     case OSERR_PUBNOTUNIQUE:
  145.         s=SI(MSG_IFFP_OSPUBNOTUNIQUE);
  146.         break;
  147.     case OSERR_UNKNOWNMODE:
  148.         s=SI(MSG_IFFP_OSUNKNOWNMODE);
  149.         break;
  150.     default:
  151.         sprintf(unknown,SI(MSG_IFFP_OSUNKNOWNERR_D),errorcode);
  152.         s=unknown;
  153.     }
  154.     return(s);
  155.     }
  156.  
  157.  
  158. UBYTE *GetString(ULONG id)
  159.     {
  160.     struct AppString *as;
  161.     UBYTE *s = "";
  162.     int k,l;
  163.  
  164.     l = sizeof(AppStrings);
  165.     as = AppStrings;
  166.  
  167.     for(k=0; k<l; k++, as++)
  168.     {
  169.     if(as->as_ID == id)
  170.         {
  171.         s = as->as_Str;
  172.         break;
  173.         }
  174.     }
  175. #ifdef LOCALIZED
  176.     if((LocaleBase)&&(catalog)&&(*s))
  177.     {
  178.     s = GetCatalogStr(catalog,id,s);
  179.     }
  180. #endif
  181.     return(s);
  182.     }
  183.